#include <stdio.h>
#include <stdlib.h>

#define PRODUCTIONS 38

#define ACTION_COLS 26
#define GOTO_COLS 18
#define STATES 248

#define MAX_STACK_SIZE 1024

#define ACTION_TABLE_FLATTEN_LEN (ACTION_COLS * STATES)
#define GOTO_TABLE_FLATTEN_LEN (GOTO_COLS * STATES)

#define INIT_STATE_NUMBER 0

extern int yyin;
extern int yylex();

enum Symbols {
    /* Terminals */
    IDENTIFIER,
    NUMBER,
    CONST,
    VAR,
    PROCEDURE,
    CALL,
    BEGIN_,
    END,
    IF,
    THEN,
    WHILE,
    DO,
    ODD,
    READ,
    WRITE,
    CONST_ASSIGN_OP,
    IDENTIFIER_ASSIGN_OP,
    NUMERICAL_OP_MULDIV,
    NUMERICAL_OP_PLUSMINUS,
    RELATIONAL_OP,
    DOT,
    COMMA,
    SEMICOLON,
    LEFT_PARENTHESIS,
    RIGHT_PARENTHESIS,
    /* Non-terminals */
    PROG,
    BLOCK,
    OPT_CONST_DECLARE,
    CONST_DECLARE,
    CONST_ASSIGN,
    OPT_VAR_DECLARE,
    IDENTIFIER_LIST,
    OPT_PROCEDURES,
    OPT_STATEMENT,
    STATEMENT,
    STATEMENT_LIST,
    EXPRESSION_LIST,
    CONDITION,
    EXPRESSION,
    ADD_SUBTRACT_EXPRESSION,
    TERM,
    FACTOR,
    EXTRA_START_SYMBOL = -1,
    /* Special symbols */
    Empty = -2,
    EOF_ = -3,
};

int productions_lhs_sym_and_rhs_len[PRODUCTIONS][2] = 
{
  {-1, 1},
  {25, 2},
  {26, 4},
  {27, 0},
  {27, 2},
  {28, 2},
  {28, 3},
  {29, 3},
  {30, 0},
  {30, 3},
  {31, 1},
  {31, 3},
  {32, 0},
  {32, 6},
  {33, 0},
  {33, 1},
  {34, 3},
  {34, 2},
  {34, 3},
  {34, 4},
  {34, 4},
  {34, 4},
  {34, 4},
  {35, 1},
  {35, 3},
  {36, 1},
  {36, 3},
  {37, 2},
  {37, 3},
  {38, 1},
  {38, 2},
  {39, 1},
  {39, 3},
  {40, 1},
  {40, 3},
  {41, 1},
  {41, 1},
  {41, 3}
};

int action_table_cols_symbols[ACTION_COLS] = 
{-3, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0};

int goto_table_cols_symbols[GOTO_COLS] = 
{-1, 41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25};

const char *action_table_flatten[ACTION_TABLE_FLATTEN_LEN] = 
{
  "E", "E", "E", "E", "E", "R3", "E", "E", "E", "E", "E", "R3", "R3", "E", "E", "R3", "E", "R3", "E", "R3", "R3", "R3", "R3", "S5", "E", "R3", 
  "A", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "S12", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "R8", "E", "E", "E", "E", "E", "R8", "R8", "E", "E", "R8", "E", "R8", "E", "R8", "R8", "R8", "S11", "E", "E", "R8", 
  "E", "E", "E", "S8", "S9", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S7", 
  "E", "E", "E", "R5", "R5", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S17", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "R4", "E", "E", "E", "E", "E", "R4", "R4", "E", "E", "R4", "E", "R4", "E", "R4", "R4", "R4", "R4", "E", "E", "R4", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S7", 
  "E", "E", "E", "E", "E", "R12", "E", "E", "E", "E", "E", "R12", "R12", "E", "E", "R12", "E", "R12", "E", "R12", "R12", "R12", "E", "E", "E", "R12", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S14", 
  "R1", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "S29", "S30", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "R10", "R10", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "R14", "E", "E", "E", "E", "E", "S28", "S27", "E", "E", "S26", "E", "S25", "E", "S24", "S23", "S20", "E", "E", "E", "S22", 
  "E", "E", "E", "R6", "R6", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S18", "E", 
  "E", "E", "E", "R7", "R7", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "R2", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S59", 
  "E", "E", "E", "E", "E", "R15", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "S58", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S57", 
  "E", "E", "E", "R14", "E", "E", "E", "E", "E", "E", "E", "S56", "S55", "E", "E", "S54", "E", "S53", "R14", "S52", "S51", "E", "E", "E", "E", "S50", 
  "E", "E", "S43", "E", "E", "E", "E", "S38", "E", "E", "E", "E", "E", "S45", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S42", "S41", 
  "E", "E", "S43", "E", "E", "E", "E", "S38", "E", "E", "E", "E", "E", "S35", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S42", "S41", 
  "E", "E", "S33", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S32", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "R9", "E", "E", "E", "E", "E", "R9", "R9", "E", "E", "R9", "E", "R9", "E", "R9", "R9", "R9", "E", "E", "E", "R9", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S31", 
  "E", "E", "E", "R11", "R11", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S119", "E", "E", "E", "E", "S114", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S118", "S117", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S110", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S108", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S107", "E", "E", "E", "E", "S102", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S106", "S105", 
  "E", "E", "E", "E", "E", "E", "S99", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "R29", "S98", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S43", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S42", "S41", 
  "E", "E", "E", "E", "E", "E", "R31", "R31", "S96", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "R33", "R33", "R33", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "R35", "R35", "R35", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "R36", "R36", "R36", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S95", "E", "E", "E", "E", "S90", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S94", "S93", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S87", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S86", "E", "E", "E", "E", "S81", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S85", "S84", 
  "E", "E", "E", "E", "E", "E", "S78", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "S77", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S76", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "R23", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "R23", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "R15", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "R15", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "S75", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S74", 
  "E", "E", "E", "R14", "E", "E", "E", "E", "E", "E", "E", "S56", "S55", "E", "E", "S54", "E", "S53", "R14", "S52", "S51", "E", "E", "E", "E", "S50", 
  "E", "E", "S43", "E", "E", "E", "E", "S38", "E", "E", "E", "E", "E", "S45", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S42", "S41", 
  "E", "E", "S43", "E", "E", "E", "E", "S38", "E", "E", "E", "E", "E", "S35", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S42", "S41", 
  "E", "E", "S70", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S69", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "R17", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S68", "E", "E", "E", "E", "S63", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S67", "S66", 
  "E", "E", "E", "S60", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "R3", "E", "E", "E", "E", "E", "E", "E", "R3", "R3", "E", "E", "R3", "E", "R3", "E", "R3", "R3", "R3", "R3", "S5", "E", "R3", 
  "E", "E", "E", "E", "E", "R16", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "R29", "E", "S164", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S68", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S67", "S66", 
  "E", "E", "E", "E", "E", "R31", "E", "R31", "S162", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "R33", "E", "R33", "R33", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "R35", "E", "R35", "R35", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "R36", "E", "R36", "R36", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S95", "E", "E", "E", "E", "S90", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S94", "S93", 
  "E", "E", "S119", "E", "E", "E", "E", "S114", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S118", "S117", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S110", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S158", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S157", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "S77", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S156", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "R17", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "R17", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S155", "E", "E", "E", "E", "S150", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S154", "S153", 
  "E", "E", "E", "E", "E", "R18", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "R14", "E", "E", "E", "E", "E", "E", "E", "S56", "S55", "E", "E", "S54", "E", "S53", "R14", "S52", "S51", "E", "E", "E", "E", "S50", 
  "E", "E", "S86", "E", "E", "E", "E", "S81", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S85", "S84", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "R27", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "S145", "E", "E", "E", "E", "E", "E", "E", "E", "R29", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S86", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S85", "S84", 
  "E", "E", "E", "E", "E", "E", "E", "R31", "S143", "E", "E", "E", "E", "E", "E", "E", "R31", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "R33", "R33", "E", "E", "E", "E", "E", "E", "E", "R33", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "R35", "R35", "E", "E", "E", "E", "E", "E", "E", "R35", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "R36", "R36", "E", "E", "E", "E", "E", "E", "E", "R36", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S95", "E", "E", "E", "E", "S90", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S94", "S93", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S28", "S27", "E", "E", "S26", "E", "S25", "E", "S24", "S23", "E", "E", "E", "E", "S22", 
  "E", "S140", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "R29", "E", "E", "E", "E", "E", "S139", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S95", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S94", "S93", 
  "E", "R31", "E", "E", "E", "E", "E", "R31", "S137", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "R33", "E", "E", "E", "E", "E", "R33", "R33", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "R35", "E", "E", "E", "E", "E", "R35", "R35", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "R36", "E", "E", "E", "E", "E", "R36", "R36", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S95", "E", "E", "E", "E", "S90", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S94", "S93", 
  "E", "E", "S43", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S42", "S41", 
  "E", "E", "E", "E", "E", "E", "R30", "S98", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S43", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S42", "S41", 
  "E", "E", "S107", "E", "E", "E", "E", "S102", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S106", "S105", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "R27", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "S132", "E", "E", "E", "E", "E", "E", "R29", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S107", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S106", "S105", 
  "E", "E", "E", "E", "E", "E", "E", "R31", "S130", "E", "E", "E", "E", "E", "R31", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "R33", "R33", "E", "E", "E", "E", "E", "R33", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "R35", "R35", "E", "E", "E", "E", "E", "R35", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "R36", "R36", "E", "E", "E", "E", "E", "R36", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S95", "E", "E", "E", "E", "S90", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S94", "S93", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S28", "S27", "E", "E", "S26", "E", "S25", "E", "S24", "S23", "E", "E", "E", "E", "S22", 
  "E", "S126", "E", "E", "S127", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "R10", "E", "E", "R10", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "S124", "E", "E", "S125", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "R25", "E", "E", "R25", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "R29", "E", "E", "R29", "E", "E", "S123", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S119", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S118", "S117", 
  "E", "R31", "E", "E", "R31", "E", "E", "R31", "S121", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "R33", "E", "E", "R33", "E", "E", "R33", "R33", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "R35", "E", "E", "R35", "E", "E", "R35", "R35", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "R36", "E", "E", "R36", "E", "E", "R36", "R36", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S95", "E", "E", "E", "E", "S90", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S94", "S93", 
  "E", "S196", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S119", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S118", "S117", 
  "E", "R30", "E", "E", "R30", "E", "E", "S123", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S119", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S118", "S117", 
  "E", "E", "E", "E", "E", "R22", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S119", "E", "E", "E", "E", "S114", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S118", "S117", 
  "E", "E", "E", "E", "E", "R21", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S192", 
  "E", "E", "E", "E", "E", "R20", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "S191", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S107", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S106", "S105", 
  "E", "E", "E", "E", "E", "E", "E", "S132", "E", "E", "E", "E", "E", "E", "R30", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S107", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S106", "S105", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "R28", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "R32", "R32", "S96", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "R34", "R34", "R34", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "S188", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S95", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S94", "S93", 
  "E", "R30", "E", "E", "E", "E", "E", "S139", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S95", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S94", "S93", 
  "E", "E", "E", "E", "E", "E", "R37", "R37", "R37", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "R19", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "S185", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S86", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S85", "S84", 
  "E", "E", "E", "E", "E", "E", "E", "S145", "E", "E", "E", "E", "E", "E", "E", "E", "R30", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S86", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S85", "S84", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "R28", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "R24", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "R24", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "R16", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "R16", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "R29", "E", "E", "E", "S182", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "R29", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S155", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S154", "S153", 
  "E", "E", "E", "R31", "E", "E", "E", "R31", "S180", "E", "E", "E", "E", "E", "E", "E", "E", "E", "R31", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "R33", "E", "E", "E", "R33", "R33", "E", "E", "E", "E", "E", "E", "E", "E", "E", "R33", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "R35", "E", "E", "E", "R35", "R35", "E", "E", "E", "E", "E", "E", "E", "E", "E", "R35", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "R36", "E", "E", "E", "R36", "R36", "E", "E", "E", "E", "E", "E", "E", "E", "E", "R36", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S95", "E", "E", "E", "E", "S90", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S94", "S93", 
  "E", "E", "E", "R18", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "R18", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S56", "S55", "E", "E", "S54", "E", "S53", "E", "S52", "S51", "E", "E", "E", "E", "S50", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S56", "S55", "E", "E", "S54", "E", "S53", "E", "S52", "S51", "E", "E", "E", "E", "S50", 
  "E", "S176", "E", "E", "S127", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "S175", "E", "E", "S125", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "S174", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S68", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S67", "S66", 
  "E", "E", "E", "E", "E", "R30", "E", "S164", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S68", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S67", "S66", 
  "E", "E", "E", "S171", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "R8", "E", "E", "E", "E", "E", "E", "E", "R8", "R8", "E", "E", "R8", "E", "R8", "E", "R8", "R8", "R8", "S170", "E", "E", "R8", 
  "E", "E", "E", "S168", "S9", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "R4", "E", "E", "E", "E", "E", "E", "E", "R4", "R4", "E", "E", "R4", "E", "R4", "E", "R4", "R4", "R4", "R4", "E", "E", "R4", 
  "E", "E", "E", "R12", "E", "E", "E", "E", "E", "E", "E", "R12", "R12", "E", "E", "R12", "E", "R12", "E", "R12", "R12", "R12", "E", "E", "E", "R12", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S14", 
  "E", "E", "E", "E", "E", "R13", "E", "E", "E", "E", "E", "R13", "R13", "E", "E", "R13", "E", "R13", "E", "R13", "R13", "R13", "E", "E", "E", "R13", 
  "E", "E", "E", "E", "E", "R32", "E", "R32", "S162", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "R34", "E", "R34", "R34", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "R37", "E", "R37", "R37", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "R22", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "R22", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "R21", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "R21", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "R20", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "R20", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "R19", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "R19", "E", "E", "E", "E", "E", "E", "E", 
  "E", "S199", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S155", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S154", "S153", 
  "E", "E", "E", "R30", "E", "E", "E", "S182", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "R30", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S155", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S154", "S153", 
  "E", "E", "E", "E", "E", "E", "E", "R32", "S143", "E", "E", "E", "E", "E", "E", "E", "R32", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "R34", "R34", "E", "E", "E", "E", "E", "E", "E", "R34", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "R37", "R37", "E", "E", "E", "E", "E", "E", "E", "R37", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "R32", "E", "E", "E", "E", "E", "R32", "S137", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "R34", "E", "E", "E", "E", "E", "R34", "R34", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "R37", "E", "E", "E", "E", "E", "R37", "R37", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "R32", "S130", "E", "E", "E", "E", "E", "R32", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "R34", "R34", "E", "E", "E", "E", "E", "R34", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "R37", "R37", "E", "E", "E", "E", "E", "R37", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "R11", "E", "E", "R11", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "R26", "E", "E", "R26", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "R32", "E", "E", "R32", "E", "E", "R32", "S121", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "R34", "E", "E", "R34", "E", "E", "R34", "R34", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "R37", "E", "E", "R37", "E", "E", "R37", "R37", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "R32", "E", "E", "E", "R32", "S180", "E", "E", "E", "E", "E", "E", "E", "E", "E", "R32", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "R34", "E", "E", "E", "R34", "R34", "E", "E", "E", "E", "E", "E", "E", "E", "E", "R34", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "R37", "E", "E", "E", "R37", "R37", "E", "E", "E", "E", "E", "E", "E", "E", "E", "R37", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "S212", "S30", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "R14", "E", "E", "E", "E", "E", "E", "E", "S211", "S210", "E", "E", "S209", "E", "S208", "E", "S207", "S206", "S203", "E", "E", "E", "S205", 
  "E", "E", "E", "R2", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S220", 
  "E", "E", "E", "R15", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "S219", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S218", 
  "E", "E", "E", "R14", "E", "E", "E", "E", "E", "E", "E", "S56", "S55", "E", "E", "S54", "E", "S53", "R14", "S52", "S51", "E", "E", "E", "E", "S50", 
  "E", "E", "S43", "E", "E", "E", "E", "S38", "E", "E", "E", "E", "E", "S45", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S42", "S41", 
  "E", "E", "S43", "E", "E", "E", "E", "S38", "E", "E", "E", "E", "E", "S35", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S42", "S41", 
  "E", "E", "S214", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S213", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "R9", "E", "E", "E", "E", "E", "E", "E", "R9", "R9", "E", "E", "R9", "E", "R9", "E", "R9", "R9", "R9", "E", "E", "E", "R9", 
  "E", "E", "S119", "E", "E", "E", "E", "S114", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S118", "S117", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S110", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S232", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S231", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "S77", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S230", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "R17", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S229", "E", "E", "E", "E", "S224", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S228", "S227", 
  "E", "E", "E", "S221", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "R3", "E", "E", "E", "E", "E", "E", "E", "R3", "R3", "E", "E", "R3", "E", "R3", "E", "R3", "R3", "R3", "R3", "S5", "E", "R3", 
  "E", "E", "E", "R16", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "R29", "E", "E", "E", "S242", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S229", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S228", "S227", 
  "E", "E", "E", "R31", "E", "E", "E", "R31", "S240", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "R33", "E", "E", "E", "R33", "R33", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "R35", "E", "E", "E", "R35", "R35", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "R36", "E", "E", "E", "R36", "R36", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S95", "E", "E", "E", "E", "S90", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S94", "S93", 
  "E", "E", "E", "R18", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S211", "S210", "E", "E", "S209", "E", "S208", "E", "S207", "S206", "E", "E", "E", "E", "S205", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S211", "S210", "E", "E", "S209", "E", "S208", "E", "S207", "S206", "E", "E", "E", "E", "S205", 
  "E", "S236", "E", "E", "S127", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "S235", "E", "E", "S125", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "R22", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "R21", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "R20", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "R19", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "S247", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S229", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S228", "S227", 
  "E", "E", "E", "R30", "E", "E", "E", "S242", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "S229", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "S228", "S227", 
  "E", "E", "E", "S244", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "R13", "E", "E", "E", "E", "E", "E", "E", "R13", "R13", "E", "E", "R13", "E", "R13", "E", "R13", "R13", "R13", "E", "E", "E", "R13", 
  "E", "E", "E", "R32", "E", "E", "E", "R32", "S240", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "R34", "E", "E", "E", "R34", "R34", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "R37", "E", "E", "E", "R37", "R37", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
};

const char *goto_table_flatten[GOTO_TABLE_FLATTEN_LEN] = 
{
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "G4", "G3", "G2", "G1", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "G10", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "G6", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "G16", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "G15", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "G13", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "G21", "G19", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "G47", "G49", "G48", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G40", "G39", "G37", "G46", "G44", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G40", "G39", "G37", "G36", "G34", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G116", "G115", "G113", "G112", "E", "G111", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "G109", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G104", "G103", "G101", "G100", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G40", "G39", "G97", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G92", "G91", "G89", "G88", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G83", "G82", "G80", "G79", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "G73", "G49", "G48", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G40", "G39", "G37", "G46", "G72", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G40", "G39", "G37", "G36", "G71", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G65", "G64", "G62", "G61", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "G167", "G166", "G165", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G65", "G64", "G163", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G92", "G91", "G89", "G161", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G116", "G115", "G113", "G112", "E", "G160", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "G159", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G152", "G151", "G149", "G148", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "G49", "G147", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G83", "G82", "G80", "G146", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G83", "G82", "G144", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G92", "G91", "G89", "G142", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "G141", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G92", "G91", "G138", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G92", "G91", "G89", "G136", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G135", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G40", "G134", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G104", "G103", "G101", "G133", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G104", "G103", "G131", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G92", "G91", "G89", "G129", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "G128", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G116", "G115", "G122", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G92", "G91", "G89", "G120", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G195", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G116", "G194", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G116", "G115", "G113", "G193", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G190", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G104", "G189", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G187", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G92", "G186", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G184", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G83", "G183", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G152", "G151", "G181", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G92", "G91", "G89", "G179", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "G178", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "G177", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G173", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G65", "G172", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "G169", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "G201", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "G200", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G198", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G152", "G197", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "G204", "G202", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "G217", "G49", "G48", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G40", "G39", "G37", "G46", "G216", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G40", "G39", "G37", "G36", "G215", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G116", "G115", "G113", "G112", "E", "G234", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "G233", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G226", "G225", "G223", "G222", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "G167", "G166", "G243", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G226", "G225", "G241", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G92", "G91", "G89", "G239", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "G238", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "G237", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G246", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "G226", "G245", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
  "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", "E", 
};

struct simple_int_stack{
  int s[MAX_STACK_SIZE];
  int stack_top_pos;
};

int linenum = 1;

void stack_init(struct simple_int_stack *stack) {
  stack->stack_top_pos = -1;
}

int stack_top_ele(struct simple_int_stack *stack) {
  if (stack->stack_top_pos <= -1 || stack->stack_top_pos >= MAX_STACK_SIZE){
    printf("Error: Stack Top Unreachable.\n");
    exit(-1);
  } else {
    return stack->s[stack->stack_top_pos];
  }
}

void stack_push(struct simple_int_stack *stack, int ele) {
  if (stack->stack_top_pos < -1 || stack->stack_top_pos >= MAX_STACK_SIZE - 1) {
    printf("Error: Stack Uninitialized or Full.\n");
    exit(-1);
  } else {
    stack->s[++(stack->stack_top_pos)] = ele;
  }
}

void stack_popn(struct simple_int_stack *stack, int n) {
  if (stack->stack_top_pos + 1 < n) {
    printf("Error: Stack Pop Exhasted.\n");
    exit(-1);
  } else {
    stack->stack_top_pos -= n;
  }
}

const char *action_table_get_entry(int state_num, int symbol){
  int i, col, row;

  row = state_num;
  for (i = 0; i < ACTION_COLS; i++)
    if (action_table_cols_symbols[i] == symbol) {
      col = i;
      break;
    }
  
  if (i == ACTION_COLS) {
    printf("Error: Entry can not be found in action table\n");
    exit(-1);
  }

  return action_table_flatten[(row * ACTION_COLS) + col];
}

const char *goto_table_get_entry(int state_num, int symbol){
  int i, col, row;

  row = state_num;
  for (i = 0; i < GOTO_COLS; i++)
    if (goto_table_cols_symbols[i] == symbol) {
      col = i;
      break;
    }

  if (i == GOTO_COLS) {
    printf("Error: Entry can not be found in goto table\n");
    exit(-1);
  }

  return goto_table_flatten[(row * GOTO_COLS) + col];
}

struct simple_int_stack main_stack_struct;
struct simple_int_stack *stack = &main_stack_struct;

void lr1_parsing() {
  /* primary state variables: */
  
  int cur_sym, cur_state;

  /* temporary variables: */

  const char *action_str;
  const char *goto_str;
  int dest_state;
  int prod_num, *prod_info, prod_lhs_sym, prod_rhs_len;

  /* start: */

  printf("Init 0...\n");
  stack_init(stack);
  printf("Init 1...\n");
  stack_push(stack, INIT_STATE_NUMBER);

  printf("Init 2...\n");
  cur_sym = yylex();

  printf("Init Done\n");
  while (1) {
    cur_state = stack_top_ele(stack);
    printf("cur state %d cur sym %d\n", cur_state, cur_sym);

    action_str = action_table_get_entry(cur_state, cur_sym);
    printf("action_str %s\n", action_str);

    switch (*action_str)
    {
    case 'S':
      printf("[Shift] Shift in Symbol#%d\n", cur_sym);
      stack_push(stack, atoi(action_str + 1));
      cur_sym = yylex();
      break;
    case 'R':
      prod_num = atoi(action_str + 1);
      prod_info = productions_lhs_sym_and_rhs_len[prod_num];
      prod_lhs_sym = prod_info[0];
      prod_rhs_len = prod_info[1];

      stack_popn(stack, prod_rhs_len);
      
      goto_str = goto_table_get_entry(stack_top_ele(stack), prod_lhs_sym);

      if (*goto_str == 'G') {
        stack_push(stack, atoi(goto_str + 1));
        printf("[Reduce] Reduce by Prod #%d\n", prod_num);
      } else {
        printf("Error: Required goto table entry don't exist. linenum = %d\n", linenum);
        exit(-1);
      } 
      break;
    case 'A':
      goto complete;
    default:
      printf("Error: Unknown Syntax error. linenum = %d\n", linenum);
      exit(-1);
    }
  }
  complete:
  printf("Parsing Complete.\n");
}

int main (int argc, char **argv) {
  if (argc > 1) {
    if (!(yyin = fopen(argv[1], "r"))) {
      printf("Error: can not open file %s\n", argv[1]);
      return -1;
    }
  }
  printf("Start Parsing...\n");
  lr1_parsing();
  return 0;
}
